home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-09-22 | 8.9 KB | 195 lines |
- DEFINITION MODULE Screen;
-
- (*****************************************************************************)
- (* Ermoeglicht Zugriff auf die Terminalemulation des Atari. *)
- (* *)
- (* Dieses Modul ist wirklich nur fuer die Ausgabe von TOS/TTP-Programmen ge- *)
- (* eignet, da die Steuersequenzen nur fuer diese Emulation passen und deswe- *)
- (* gen auch nicht umlenkbar sind; wenn die Terminalausgabe durch "TermWindow"*)
- (* wie bei nicht gelinkten Objektmodulen geschieht, nuetzt einem dieses Modul*)
- (* wenig. *)
- (* *)
- (* Eine allgemein verwendbare, umlenkbare Ausgabefunktion fuer Zeichen ist *)
- (* allerdings "WriteChar". *)
- (* *)
- (* Zugriffe anderer Module ( z.B. "Terminal" ) auf den TOS-(Text)Bildschirm *)
- (* sollten nur ueber dieses Modul laufen. *)
- (*___________________________________________________________________________*)
- (* 05-Mae-90 , Holger Kleinschmidt *)
- (*****************************************************************************)
-
-
- PROCEDURE WriteRawCon ((* EIN/ -- *) zeichen : CHAR );
-
- PROCEDURE WriteRawConStr ((* EIN/ -- *) string : ARRAY OF CHAR );
-
- (*------------------------------------------------------------------------
- | Die Zeichenausgabe laeuft ueber das BIOS, aber nicht ueber die Termi- |
- | nalemulation. Die Zeichen unterhalb 20H, die sonst als Controlcodes |
- | interpretiert werden, werden als Graphikzeichen ausgegeben. |
- | Die Ausgabe ist nicht umlenkbar. |
- ------------------------------------------------------------------------*)
-
- PROCEDURE WriteCon ((* EIN/ -- *) zeichen : CHAR );
-
- PROCEDURE WriteConStr ((* EIN/ -- *) string : ARRAY OF CHAR );
-
- (*------------------------------------------------------------------------
- | Wie "WriteRawCon", aber die Ausgabe laeuft ueber die Terminalemulation |
- | ( Controlcodes werden erkannt ). |
- ------------------------------------------------------------------------*)
-
- PROCEDURE WriteChar ((* EIN/ -- *) zeichen : CHAR );
-
- PROCEDURE WriteStr ((* EIN/ -- *) string : ARRAY OF CHAR );
-
- (*------------------------------------------------------------------------
- | Wie "WriteCon", aber die Ausgabe ist umlenkbar ( laeuft ueber GEMDOS ).|
- | Die Ausgabe ist langsamer als die ueber "WriteCon". |
- ------------------------------------------------------------------------*)
-
-
- PROCEDURE CursorUp;
-
- PROCEDURE CursorUpScroll;
-
- PROCEDURE CursorDown;
-
- PROCEDURE CursorRight;
-
- PROCEDURE CursorLeft;
-
- (*------------------------------------------------------------------------
- | Die Prozeduren bewegen den Cursor in die jeweils angegeben Richtung; |
- | stand der Cursor bereits am jeweiligen Rand, passiert nichts, bei |
- | "CursorUpScroll" wird der Bildschirm jedoch um eine Zeile nach unten |
- | verschoben. |
- ------------------------------------------------------------------------*)
-
- PROCEDURE CursorHome;
-
- PROCEDURE ClearScreen;
-
- (*------------------------------------------------------------------------
- | Der Cursor wird in die linke obere Ecke gesetzt; "ClearScreen" loescht |
- | zusaetzlich den Bildschirm. |
- ------------------------------------------------------------------------*)
-
- PROCEDURE EraseToEndOfPage;
-
- PROCEDURE EraseToEndOfLine;
-
- PROCEDURE EraseLine;
-
- PROCEDURE EraseToStartOfPage;
-
- PROCEDURE EraseToStartOfLine;
-
- (*------------------------------------------------------------------------
- | Loescht den jeweils angegebenen Bereich zwischen Cursor und Zeilen- |
- | bzw. Seitenrand. Der Cursor bleibt an der bisherigen Position. |
- | Bei "EraseLine" wird die gesamte Zeile geloescht und der Cursor an den |
- | linken Bildschirmrand gesetzt. |
- ------------------------------------------------------------------------*)
-
- PROCEDURE InsertLine;
-
- PROCEDURE DeleteLine;
-
- (*------------------------------------------------------------------------
- | Loescht eine Zeile bzw. fuegt an der Cursorposition eine Leerzeile ein.|
- | Der Cursor bleibt in der bisherigen Zeile und wird an den linken Rand |
- | gesetzt. Der Bereich zwischen Cursor und unterem Bildschirmrand wird |
- | entsprechend um eine Zeile nach oben bzw. unten verschoben. |
- ------------------------------------------------------------------------*)
-
-
- PROCEDURE AutoWrapOn;
-
- PROCEDURE AutoWrapOff;
-
- (*------------------------------------------------------------------------
- | Ist der Autowrap-Modus eingeschaltet, wird bei Erreichen des Zeilen- |
- | endes automatisch eine neue Zeile begonnen, sonst wird nicht ueber den |
- | Zeilenrand hinausgeschrieben, es muss ein explizites CR-LF ausgegeben |
- | werden ( WriteLn ). |
- ------------------------------------------------------------------------*)
-
-
- PROCEDURE GotoXY ((* EIN/ -- *) spalte,
- (* EIN/ -- *) zeile : CARDINAL );
-
- (*------------------------------------------------------------------------
- | Setzt den Cursor auf <zeile> und <spalte>. |
- | 0 <= zeile <= 24 und 0 <= spalte <= 79; sind <zeile> oder <spalte> |
- | groesser, so werden sie auf den jeweiligen Maximalwert gesetzt. |
- ------------------------------------------------------------------------*)
-
- PROCEDURE SaveCursorPos;
-
- PROCEDURE RestoreCursorPos;
-
- (*------------------------------------------------------------------------
- | Speichert intern die momentane Cursorposition bzw. setzt den Cursor |
- | auf den gespeicherten Wert. |
- ------------------------------------------------------------------------*)
-
- PROCEDURE CursorOn;
-
- PROCEDURE CursorOff;
-
- (*------------------------------------------------------------------------
- | Der Cursor wird sichtbar bzw. unsichtbar. |
- ------------------------------------------------------------------------*)
-
- PROCEDURE CursorBlinkOn;
-
- PROCEDURE CursorBlinkOff;
-
- (*------------------------------------------------------------------------
- | Der Cursor blinkt oder wird dauernd sichtbar. |
- ------------------------------------------------------------------------*)
-
-
- PROCEDURE SetBlinkRate ((* EIN/ -- *) ms : CARDINAL );
-
- PROCEDURE GetBlinkRate ((* -- /AUS *) VAR ms : CARDINAL );
-
- PROCEDURE RestoreBlinkRate;
-
- (*------------------------------------------------------------------------
- | Die Blinkgeschwindigkeit des Cursors wird gesetzt bzw. abgefragt. |
- | <ms> gibt die Periodendauer des Blinkens in Millisekunden an. |
- | Die genaue Zeit haengt allerdings vom verwendeten Monitor ab ( es wird |
- | Schwarzweiss angenommen) und ist stets ein Vielfaches der doppelten |
- | Periodendauer der Bildfrequenz. |
- | "RestoreBlinkRate" setzt die Blinkrate auf den Wert, den sie bei |
- | Programmanfang hatte. |
- ------------------------------------------------------------------------*)
-
-
- PROCEDURE InverseOn;
-
- PROCEDURE InverseOff;
-
- (*------------------------------------------------------------------------
- | Hintergrund- und Vordergrundfarbe werden ausgetauscht bzw. wieder auf |
- | den Ursprungswert gesetzt. |
- ------------------------------------------------------------------------*)
-
- PROCEDURE SetForegroundColor ((* EIN/ -- *) farbe : CARDINAL );
-
- PROCEDURE SetBackgroundColor ((* EIN/ -- *) farbe : CARDINAL );
-
- (*------------------------------------------------------------------------
- | Setzt die Schrift- bzw. Hintergrundfarbe. Die moeglichen Werte fuer |
- | <farbe> sind von der Bildschirmaufloesung abhaengig: |
- | |
- | Hoch : 0 <= farbe <= 1 |
- | Mittel : 0 <= farbe <= 3 |
- | Niedrig : 0 <= farbe <= 15 |
- ------------------------------------------------------------------------*)
-
-
- END Screen.
-